package main

import (
	// 导入session包
	"github.com/gin-contrib/sessions"
	"net/http"

	// 导入session存储引擎
	"github.com/gin-contrib/sessions/cookie"
	// 导入gin框架包
	"github.com/gin-gonic/gin"
)
/**
简单的API：将其用作设置签名（以及可选的加密）cookie的简便方法。
内置的后端可将session存储在cookie或文件系统中。
Flash消息：一直持续读取的session值。
切换session持久性（又称“记住我”）和设置其他属性的便捷方法。
旋转身份验证和加密密钥的机制。
每个请求有多个session，即使使用不同的后端也是如此。
自定义session后端的接口和基础结构：可以使用通用API检索并批量保存来自不同商店的session。
 */


// 初始化一个cookie存储对象
// something-very-secret应该是一个你自己的密匙，只要不被别人知道就行
func main() {
	r:= gin.Default()
	// 创建基于cookie的存储引擎，secret11111 参数是用于加密的密钥
   store:=  cookie.NewStore([]byte("secret11111"))
   r.Use(sessions.Sessions("mysession",store))
   r.GET("/hello", func(c *gin.Context) {
	   //初始化session
   	 session:=  sessions.Default(c)
	   if session.Get("hello")!="world" {
		   // 设置session数据
	   	session.Set("hello","world")
		   // 删除session数据
		   //session.Delete("hello")
		   //清空session
		   //session.Clear()
		   // 保存session数据
		   //session.Save()
		   // 删除整个session
		   // session.Clear()
	   }
	   c.Request.URL.Path ="/hi"
	   r.HandleContext(c)
   })
   r.GET("/hi", func(context *gin.Context) {
	   session := sessions.Default(context)
	   context.JSON(http.StatusOK,gin.H{
	   	"session":session.Get("hello"),
	   })
   })
   r.Run(":8900")


}
